package com.ruoyi.patrol.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目信息对象 pt_project
 *
 * @author linan
 * @date 2024-02-16
 */
@Data
public class PtProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 序号 */
    private Long id;

    /** 公司id */
    @Excel(name = "公司id")
    private Long deptId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 业主联系人 */
    @Excel(name = "业主联系人")
    private String owner;

    /** 业主单位 */
    @Excel(name = "业主单位")
    private String ownerUnit;

    /** 业主单位地址 */
    @Excel(name = "业主单位地址")
    private String ownerUnitArea;

    /** 业主联系电话 */
    @Excel(name = "业主联系电话")
    private String ownerPhone;

    /** 项目经理 */
    @Excel(name = "项目经理")
    private String projectManager;

    /** 项目经理电话 */
    @Excel(name = "项目经理电话")
    private String projectManagerPhone;

    /** 合同时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractDate;

    /** 合同到期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同到期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractEndDate;

    /** 图片 */
    @Excel(name = "图片")
    private String img;

    /** 附件 */
    @Excel(name = "附件")
    private String file;

    /** 设备清单 */
    @Excel(name = "附件")
    private String deviceFile;

    /** 使用单位 */
    @Excel(name = "使用单位")
    private String useUnit;

    /** 使用单位联系人 */
    @Excel(name = "使用单位联系人")
    private String useName;

    /** 使用单位电话 */
    @Excel(name = "使用单位电话")
    private String usePhone;

    /** 设计单位 */
    @Excel(name = "设计单位")
    private String designUnit;

    /** 设计单位联系人 */
    @Excel(name = "设计单位联系人")
    private String designName;

    /** 设计单位电话 */
    @Excel(name = "设计单位电话")
    private String designPhone;

    /** 监理单位 */
    @Excel(name = "监理单位")
    private String superviseUnit;

    /** 监理单位联系人 */
    @Excel(name = "监理单位联系人")
    private String superviseName;

    /** 监理单位电话 */
    @Excel(name = "监理单位电话")
    private String supervisePhone;

    /** 总包单位（项目总包） */
    @Excel(name = "总包单位", readConverterExp = "项=目总包")
    private String contractingUnit;

    /** 总包单位联系人 */
    @Excel(name = "总包单位联系人")
    private String contractingName;

    /** 总包单位电话 */
    @Excel(name = "总包单位电话")
    private String contractingPhone;

    /** 合作单位 */
    @Excel(name = "合作单位")
    private String cooperateUnit;

    /** 合作单位联系人 */
    @Excel(name = "合作单位联系人")
    private String cooperateName;

    /** 合作单位电话 */
    @Excel(name = "合作单位电话")
    private String cooperatePhone;

    /** 跟审单位 */
    @Excel(name = "跟审单位")
    private String checkUnit;

    /** 跟审单位联系人 */
    @Excel(name = "跟审单位联系人")
    private String checkName;

    /** 跟审单位电话 */
    @Excel(name = "跟审单位电话")
    private String checkPhone;

    /** 预算审核单位 */
    @Excel(name = "预算审核单位")
    private String budgetReviewUnit;

    /** 预算审核联系人 */
    @Excel(name = "预算审核联系人")
    private String budgetReviewName;

    /** 预算审核电话 */
    @Excel(name = "预算审核电话")
    private String budgetReviewPhone;

    /** 审计单位 */
    @Excel(name = "审计单位")
    private String auditUnit;

    /** 审计单位联系人 */
    @Excel(name = "审计单位联系人")
    private String auditName;

    /** 审计单位电话 */
    @Excel(name = "审计单位电话")
    private String auditPhone;

    /** 检测单位 */
    @Excel(name = "检测单位")
    private String testUnit;

    /** 检测单位联系人 */
    @Excel(name = "检测单位联系人")
    private String testName;

    /** 检测单位电话 */
    @Excel(name = "检测单位电话")
    private String testPhone;

    /** 运营商（链路） */
    @Excel(name = "运营商", readConverterExp = "链=路")
    private String operators;

    /** 运营商开通时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "运营商开通时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date operatorsTime;

    /** 运营商电话 */
    @Excel(name = "运营商电话")
    private String operatorsPhone;

    /** 分包单位（我方分包单位） */
    @Excel(name = "分包单位", readConverterExp = "我=方分包单位")
    private String subcontractUnit;

    /** 分包单位联系人 */
    @Excel(name = "分包单位联系人")
    private String subcontractName;

    /** 分包单位电话 */
    @Excel(name = "分包单位电话")
    private String subcontractPhone;

    /** 业务负责人（我司） */
    @Excel(name = "业务负责人", readConverterExp = "我=司")
    private String businessManager;

    /** 业务负责人电话 */
    @Excel(name = "业务负责人电话")
    private String businessPhone;

    /** 售前负责人（我司） */
    @Excel(name = "售前负责人", readConverterExp = "我=司")
    private String presaleManager;

    /** 售前负责人电话 */
    @Excel(name = "售前负责人电话")
    private String presalePhone;

    /** 分包单位负责人（我司） */
    @Excel(name = "分包单位负责人", readConverterExp = "我=司")
    private String subcontractManager;

    /** 分包单位负责人电话 */
    @Excel(name = "分包单位负责人电话")
    private String subcontractManagerPhone;

    /** 总包预估工期 */
    @Excel(name = "总包预估工期")
    private String contractingPredictDuration;

    /** 总包实际工期 */
    @Excel(name = "总包实际工期")
    private String contractingActualDuration;

    /** 项目工期（项目经理评估） */
    @Excel(name = "项目工期", readConverterExp = "项=目经理评估")
    private String projectDuration;

    /** 项目实际工期 */
    @Excel(name = "项目实际工期")
    private String actualDuration;

    /** 开工日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开工日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 初验日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "初验日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date inspectDate;

    /** 竣工日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "竣工日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date completionDate;

    /** 质保时间 */
    @Excel(name = "质保时间")
    private String warrantyTime;

    /** 目录id */
    @Excel(name = "目录id")
    private Long catId;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private String projectType;

    /**
     * 目录路径数组
     */
    @TableField(exist = false)
    private Long[] catalogPath;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("deptId", getDeptId())
                .append("projectName", getProjectName())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("owner", getOwner())
                .append("ownerUnit", getOwnerUnit())
                .append("ownerUnitArea", getOwnerUnitArea())
                .append("ownerPhone", getOwnerPhone())
                .append("projectManager", getProjectManager())
                .append("projectManagerPhone", getProjectManagerPhone())
                .append("contractDate", getContractDate())
                .append("contractEndDate", getContractEndDate())
                .append("remark", getRemark())
                .append("img", getImg())
                .append("file", getFile())
                .append("useUnit", getUseUnit())
                .append("useName", getUseName())
                .append("usePhone", getUsePhone())
                .append("designUnit", getDesignUnit())
                .append("designName", getDesignName())
                .append("designPhone", getDesignPhone())
                .append("superviseUnit", getSuperviseUnit())
                .append("superviseName", getSuperviseName())
                .append("supervisePhone", getSupervisePhone())
                .append("contractingUnit", getContractingUnit())
                .append("contractingName", getContractingName())
                .append("contractingPhone", getContractingPhone())
                .append("cooperateUnit", getCooperateUnit())
                .append("cooperateName", getCooperateName())
                .append("cooperatePhone", getCooperatePhone())
                .append("checkUnit", getCheckUnit())
                .append("checkName", getCheckName())
                .append("checkPhone", getCheckPhone())
                .append("budgetReviewUnit", getBudgetReviewUnit())
                .append("budgetReviewName", getBudgetReviewName())
                .append("budgetReviewPhone", getBudgetReviewPhone())
                .append("auditUnit", getAuditUnit())
                .append("auditName", getAuditName())
                .append("auditPhone", getAuditPhone())
                .append("testUnit", getTestUnit())
                .append("testName", getTestName())
                .append("testPhone", getTestPhone())
                .append("operators", getOperators())
                .append("operatorsTime", getOperatorsTime())
                .append("operatorsPhone", getOperatorsPhone())
                .append("subcontractUnit", getSubcontractUnit())
                .append("subcontractName", getSubcontractName())
                .append("subcontractPhone", getSubcontractPhone())
                .append("businessManager", getBusinessManager())
                .append("businessPhone", getBusinessPhone())
                .append("presaleManager", getPresaleManager())
                .append("presalePhone", getPresalePhone())
                .append("subcontractManager", getSubcontractManager())
                .append("subcontractManagerPhone", getSubcontractManagerPhone())
                .append("contractingPredictDuration", getContractingPredictDuration())
                .append("contractingActualDuration", getContractingActualDuration())
                .append("projectDuration", getProjectDuration())
                .append("actualDuration", getActualDuration())
                .append("startDate", getStartDate())
                .append("inspectDate", getInspectDate())
                .append("completionDate", getCompletionDate())
                .append("warrantyTime", getWarrantyTime())
                .append("catId", getCatId())
                .toString();
    }
}
